Metadata-Version: 2.1
Name: cucim
Version: 22.2.0
Summary: cuCIM - an extensible toolkit designed to provide GPU accelerated I/O, computer vision & image processing primitives for N-Dimensional images with a focus on biomedical imaging.
Home-page: https://github.com/rapidsai/cucim
Author: NVIDIA Corporation
License: Apache-2.0
Project-URL: Documentation, https://cucim.readthedocs.io/
Project-URL: Changelog, https://cucim.readthedocs.io/en/latest/changelog.html
Project-URL: Issue Tracker, https://github.com/rapidsai/cucim/issues
Description: # [cuCIM](https://github.com/rapidsai/cucim)
        
        <!-- start-include-here -->
        
        [RAPIDS](https://rapids.ai) [cuCIM](https://github.com/rapidsai/cucim) is an extensible toolkit designed to provide GPU accelerated I/O, computer vision & image processing primitives for N-Dimensional images with a focus on biomedical imaging.
        
        **NOTE:** For the latest stable [README.md](https://github.com/rapidsai/cucim/blob/main/README.md) ensure you are on the `main` branch.
        
        - [GTC 2021 cuCIM: A GPU Image I/O and Processing Toolkit [S32194]](https://www.nvidia.com/en-us/gtc/catalog/?search=cuCIM#/)
          - [video](https://gtc21.event.nvidia.com/media/cuCIM%3A%20A%20GPU%20Image%20I_O%20and%20Processing%20Toolkit%20%5BS32194%5D/1_fwfxd0iu)
        - [SciPy 2021 cuCIM - A GPU image I/O and processing library](https://www.scipy2021.scipy.org/)
          - [video](https://youtu.be/G46kOOM9xbQ)
        
        ## Quick Start
        
        ### Install cuCIM
        
        ```bash
        pip install cucim
        
        # Install dependencies for `cucim.skimage` (assuming that CUDA 11.0 is used for CuPy)
        pip install scipy scikit-image cupy-cuda110
        ```
        
        ### Jupyter Notebooks
        
        Please check out our [Welcome](https://github.com/rapidsai/cucim/blob/branch-22.02/notebooks/Welcome.ipynb) notebook.
        
        ### Open Image
        
        ```python
        from cucim import CuImage
        img = CuImage('image.tif')
        ```
        
        ### See Metadata
        
        ```python
        import json
        print(img.is_loaded)        # True if image data is loaded & available.
        print(img.device)           # A device type.
        print(img.ndim)             # The number of dimensions.
        print(img.dims)             # A string containing a list of dimensions being requested.
        print(img.shape)            # A tuple of dimension sizes (in the order of `dims`).
        print(img.size('XYC'))      # Returns size as a tuple for the given dimension order.
        print(img.dtype)            # The data type of the image.
        print(img.channel_names)    # A channel name list.
        print(img.spacing())        # Returns physical size in tuple.
        print(img.spacing_units())  # Units for each spacing element (size is same with `ndim`).
        print(img.origin)           # Physical location of (0, 0, 0) (size is always 3).
        print(img.direction)        # Direction cosines (size is always 3x3).
        print(img.coord_sys)        # Coordinate frame in which the direction cosines are
                                    # measured. Available Coordinate frame is not finalized yet.
        
        # Returns a set of associated image names.
        print(img.associated_images)
        # Returns a dict that includes resolution information.
        print(json.dumps(img.resolutions, indent=2))
        # A metadata object as `dict`
        print(json.dumps(img.metadata, indent=2))
        # A raw metadata string.
        print(img.raw_metadata)
        ```
        
        ### Read Region
        
        ```python
        # Install matplotlib (`pip install matplotlib`) if not installed before.
        from matplotlib import pyplot as plt
        def visualize(image):
            dpi = 80.0
            height, width, _ = image.shape
            plt.figure(figsize=(width / dpi, height / dpi))
            plt.axis('off')
            plt.imshow(image)
        
        ```
        
        ```python
        import numpy as np
        
        # Read whole slide at the highest resolution
        resolutions = img.resolutions
        level_count = resolutions['level_count']  # level: 0 ~ (level_count - 1)
        
        # Note: ‘level’ is at 3rd parameter (OpenSlide has it at 2nd parameter)
        #   `location` is level-0 based coordinates (using the level-0 reference frame)
        #   If `size` is not specified, size would be (width, height) of the image at the specified `level`.
        region = img.read_region(location=(5000, 5000), size=(512, 512), level=0)
        
        visualize(region)
        #from PIL import Image
        #Image.fromarray(np.asarray(region))
        ```
        
        Aperio SVS (.svs) image format is supported since cuCIM [v21.10.01](https://github.com/rapidsai/cucim/wiki/release_notes_v21.10.01#support-aperio-svs-svs).
        
        Please check [this notebook](https://nbviewer.org/github/rapidsai/cucim/blob/branch-22.02/notebooks/Supporting_Aperio_SVS_Format.ipynb) to see how to use the feature.
        
        ### Using Cache
        
        Please look at this [notebook](https://nbviewer.jupyter.org/github/rapidsai/cucim/blob/branch-22.02/notebooks/Using_Cache.ipynb).
        
        ### Accessing File with GDS
        
        Please look at this [notebook](https://nbviewer.jupyter.org/github/rapidsai/cucim/blob/branch-22.02/notebooks/Accessing_File_with_GDS.ipynb).
        
        ### NVTX Support for Performance Analysis
        
        Please look at [this release note](https://github.com/rapidsai/cucim/wiki/release_notes_v21.12.00#2-add-nvtx-support-for-performance-analysis).
        
        ### Using scikit-image API
        
        Import `cucim.skimage` instead of `skimage`.
        
        ```python
        # The following code is modified from https://scikit-image.org/docs/dev/auto_examples/color_exposure/plot_ihc_color_separation.html#sphx-glr-auto-examples-color-exposure-plot-ihc-color-separation-py
        #
        import cupy as cp  # modified from: `import numpy as np`
        import matplotlib.pyplot as plt
        
        # from skimage import data
        from cucim.skimage.color import rgb2hed, hed2rgb  # modified from: `from skimage.color import rgb2hed, hed2rgb`
        
        # Example IHC image
        ihc_rgb = cp.asarray(region)  # modified from: `ihc_rgb = data.immunohistochemistry()`
        
        # Separate the stains from the IHC image
        ihc_hed = rgb2hed(ihc_rgb)
        
        # Create an RGB image for each of the stains
        null = cp.zeros_like(ihc_hed[:, :, 0])  # np -> cp
        ihc_h = hed2rgb(cp.stack((ihc_hed[:, :, 0], null, null), axis=-1))  # np -> cp
        ihc_e = hed2rgb(cp.stack((null, ihc_hed[:, :, 1], null), axis=-1))  # np -> cp
        ihc_d = hed2rgb(cp.stack((null, null, ihc_hed[:, :, 2]), axis=-1))  # np -> cp
        
        # Display
        fig, axes = plt.subplots(2, 2, figsize=(7, 6), sharex=True, sharey=True)
        ax = axes.ravel()
        
        ax[0].imshow(ihc_rgb.get())  # appended `.get()`
        ax[0].set_title("Original image")
        
        ax[1].imshow(ihc_h.get())  # appended `.get()`
        ax[1].set_title("Hematoxylin")
        
        ax[2].imshow(ihc_e.get())  # appended `.get()`
        ax[2].set_title("Eosin")
        
        ax[3].imshow(ihc_d.get())  # appended `.get()`
        ax[3].set_title("DAB")
        
        for a in ax.ravel():
            a.axis('off')
        
        fig.tight_layout()
        ```
        
        ## Acknowledgments
        
        Without awesome third-party open source software, this project wouldn't exist.
        
        Please find `LICENSE-3rdparty.md` to see which third-party open source software
        is used in this project.
        
        ## License
        
        Apache-2.0 License (see `LICENSE` file).
        
        Copyright (c) 2020-2021, NVIDIA CORPORATION.
        
        
        # Changelog (See [Release Notes](https://github.com/rapidsai/cucim/wiki/Release-Notes))
        
        ## [21.12.00](https://github.com/rapidsai/cucim/wiki/release_notes_v21.12.00)
        
        - [New] Support Aperio SVS with CPU LZW and jpeg2k decoder ([#141](https://github.com/rapidsai/cucim/pull/141)) [@gigony](https://github.com/gigony)
        - [New] Add NVTX support for performance analysis ([#144](https://github.com/rapidsai/cucim/pull/144)) [@gigony](https://github.com/gigony)
        - [New] Normalize operation ([#150](https://github.com/rapidsai/cucim/pull/150)) [@shekhardw](https://github.com/shekhardw)
        - [Bug] Load libcufile.so with RTLD_NODELETE flag ([#177](https://github.com/rapidsai/cucim/pull/177)) [@gigony](https://github.com/gigony)
        - [Bug] Remove rmm/nvcc dependencies to fix cudaErrorUnsupportedPtxVersion error ([#175](https://github.com/rapidsai/cucim/pull/175)) [@gigony](https://github.com/gigony)
        - [Bug] Do not compile code with nvcc if no CUDA kernel exists ([#171](https://github.com/rapidsai/cucim/pull/171)) [@gigony](https://github.com/gigony)
        - [Bug] Fix a segmentation fault due to unloaded libcufile ([#158](https://github.com/rapidsai/cucim/pull/158)) [@gigony](https://github.com/gigony)
        - [Bug] Fix thread contention in Cache ([#145](https://github.com/rapidsai/cucim/pull/145)) [@gigony](https://github.com/gigony)
        - [Bug] Build with NumPy 1.17 ([#148](https://github.com/rapidsai/cucim/pull/148)) [@jakirkham](https://github.com/jakirkham)
        - [Doc] Add Jupyter notebook for SVS Support ([#147](https://github.com/rapidsai/cucim/pull/147)) [@gigony](https://github.com/gigony)
        - [Doc] Update change log for v21.10.01 ([#142](https://github.com/rapidsai/cucim/pull/142)) [@gigony](https://github.com/gigony)
        - [Doc] update docs theme to pydata-sphinx-theme ([#138](https://github.com/rapidsai/cucim/pull/138)) [@quasiben](https://github.com/quasiben)
        - [Doc] Update Github links in README.md through script ([#132](https://github.com/rapidsai/cucim/pull/132)) [@gigony](https://github.com/gigony)
        - [Doc] Fix GDS link in Jupyter notebook ([#131](https://github.com/rapidsai/cucim/pull/131)) [@gigony](https://github.com/gigony)
        - [Doc] Update notebook for the interoperability with DALI ([#127](https://github.com/rapidsai/cucim/pull/127)) [@gigony](https://github.com/gigony)
        - [Update] Update `conda` recipes for Enhanced Compatibility effort by ([#164](https://github.com/rapidsai/cucim/pull/164)) [@ajschmidt8](https://github.com/ajschmidt8)
        - [Update] Fix Changelog Merge Conflicts for `branch-21.12` ([#156](https://github.com/rapidsai/cucim/pull/156)) [@ajschmidt8](https://github.com/ajschmidt8)
        - [Update] Add cucim.kit.cumed plugin with skeleton ([#129](https://github.com/rapidsai/cucim/pull/129)) [@gigony](https://github.com/gigony)
        - [Update] Update initial cpp unittests ([#128](https://github.com/rapidsai/cucim/pull/128)) [@gigony](https://github.com/gigony)
        - [Update] Optimize zoom out implementation with separate padding kernel ([#125](https://github.com/rapidsai/cucim/pull/125)) [@chirayuG-nvidia](https://github.com/chirayuG-nvidia)
        - [Update] Do not force install linux-64 version of openslide-python ([#124](https://github.com/rapidsai/cucim/pull/124)) [@Ethyling](https://github.com/Ethyling)
        
        ## [21.10.01](https://github.com/rapidsai/cucim/wiki/release_notes_v21.10.01)
        
        - [New] Support Aperio SVS with CPU LZW and jpeg2k decoder ([#141](https://github.com/rapidsai/cucim/pull/141))
        
        ## [21.10.00](https://github.com/rapidsai/cucim/wiki/release_notes_v21.10.00)
        
        - [New] Add transforms for Digital Pathology ([#100](https://github.com/rapidsai/cucim/pull/100)) [@shekhardw](https://github.com/shekhardw) [@chirayuG-nvidia](https://github.com/chirayuG-nvidia)
        - [New] Enable GDS and Support Runtime Context (__enter__, __exit__) for CuFileDriver and CuImage ([#106](https://github.com/rapidsai/cucim/pull/106)) [@gigony](https://github.com/gigony)
        - [New] Add a mechanism for user to know the availability of cucim.CuImage ([#107](https://github.com/rapidsai/cucim/pull/107)) [@gigony](https://github.com/gigony)
        - [New] Support raw RGB tiled TIFF ([#108](https://github.com/rapidsai/cucim/pull/108)) [@gigony](https://github.com/gigony)
        - [Bug] fix failing regionprops test cases ([#110](https://github.com/rapidsai/cucim/pull/110)) [@grlee77](https://github.com/grlee77)
        - [Doc] Forward-merge branch-21.08 to branch-21.10 ([#88](https://github.com/rapidsai/cucim/pull/88)) [@jakirkham](https://github.com/jakirkham)
        - [Doc] Update PyPI cuCIM v21.08.01 README.md and CHANGELOG.md ([#87](https://github.com/rapidsai/cucim/pull/87)) [@gigony](https://github.com/gigony)
        - [Update] ENH Replace gpuci_conda_retry with gpuci_mamba_retry ([#69](https://github.com/rapidsai/cucim/pull/69)) [@dillon-cullinan](https://github.com/dillon-cullinan)
        ## [21.08.01](https://github.com/rapidsai/cucim/wiki/release_notes_v21.08.01)
        
        - [New] Add skimage.morphology.thin ([#27](https://github.com/rapidsai/cucim/pull/27))
        - [Bug] Fix missing `__array_interface__` for associated_image(): ([#48](https://github.com/rapidsai/cucim/pull/48), [#65](https://github.com/rapidsai/cucim/pull/65))
        - [Testing] Added unit and performance tests for TIFF loaders ([#62](https://github.com/rapidsai/cucim/pull/62))
        - [Bug] Fix Windows int-type Bug: ([#72](https://github.com/rapidsai/cucim/pull/72))
        - [Update] Use more descriptive ElementwiseKernel names in cucim.skimage: ([#75](https://github.com/rapidsai/cucim/pull/75))
        
        ## [21.06.00](https://github.com/rapidsai/cucim/wiki/release_notes_v21.06.00)
        
        - Implement cache mechanism
        - Add `__cuda_array_interface`.
        - Fix a memory leak in Deflate decoder.
        
Platform: manylinux2014_x86_64
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Healthcare Industry
Classifier: Operating System :: POSIX :: Linux
Classifier: Environment :: Console
Classifier: Environment :: GPU :: NVIDIA CUDA :: 11.0
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: C++
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Scientific/Engineering :: Image Processing
Requires-Python: >= 3.6
Description-Content-Type: text/markdown
